package br.com.controllcivil.managegbean;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.controllcivil.generic.managegbean.ManagedBeanGeneric;
import controllcivil.bean.Usuario;
import controllcivil.interfaces.IUsuario;

@ManagedBean(name = "loginBean")
@ViewScoped
public class LoginBean extends ManagedBeanGeneric implements Serializable{
	

	private static final long serialVersionUID = 4078608998826551223L;
	private static final int ATIVO = 0;
	private String login;
	private String senha;
	
	@EJB
	private IUsuario usuarioEJB;
	
	//@EJB
	//private IEstagioObra estagioEJB;
	
	public LoginBean() {
		String erro = (String)getObjectRequest("nocid");		
		if (erro != null && erro.contains("erro=1")){
			logoff();
			addMensagemAlerta(TIME_OUT_CONVERSATION);
			return ;
		}
	}	
	
	@PostConstruct
	public void init(){
		
	}
	
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String loggar(){

		try {
			Usuario usuario = this.usuarioEJB.getUsuario(getLogin(), getSenha());
					
			if(usuario != null){
				
				if (usuario.getPessoa().getSituacao() == ATIVO){
					//this.estagioEJB.alterarStatusEstagiosVencidos(this.estagioEJB.recuperarEstagiosObrasPorDataVencimento(Calendar.getInstance()));					
					addObjectSession("USUARIO_LOGADO", usuario);					
					return SUCCESS;
				}else{
					addMensagemAlerta(USUARIO_DESATIVADO);
					
				}				
			
			}
			
			else {
				addMensagemAlerta(UC_001_MSG_ERRO_USUARIO_INVALIDO);
			}

		} catch (Exception e) {
			addMensagemErro(e.getMessage(), null);
		}	
		
		return GO_TO_LOGIN;
	}
	
	public String logoff(){
		invalidateSession();
		return GO_TO_LOGIN;
	}
	
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((senha == null) ? 0 : senha.hashCode());
		result = prime * result + ((login == null) ? 0 : login.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		LoginBean other = (LoginBean) obj;
		if (senha == null) {
			if (other.senha != null)
				return false;
		} else if (!senha.equals(other.senha))
			return false;
		if (login == null) {
			if (other.login != null)
				return false;
		} else if (!login.equals(other.login))
			return false;
		return true;
	}


	




}
